|
This page last changed on Mar 31, 2009 by tm.
Debian 4.0 (Etch) Install
- Warning: 5GB harddisk will run out of space if config'd during debian install for separate /home partition when building linux kernel to config the serial port.
- Debian install time: ~45 min depending on harddisk format time and machine speed
- Burn DVD with Debian 4.0 r7 net install and boot internet connected PC from DVD
- Hostname: mvc-debian4
- Domain: shore.mbari.org
- Partitioning: Guided - use entire disk. Either "all files in one partion' (or 'separate /home partition). This creates ext3 file system in the partitions.
- users: auv (for development) and dorado1 (for runtime)
- Use network mirror for complete package list (if internet connected)
- Software install: For embedded Linux machine Standard (only), For desktop development Standard+Desktop
- Install Grub to the master boot record
- Remove DVD and allow boot from harddisk
- Standard installs require additional debian packages, these are installed by running the script included in auv-pkgs/debian-pkg directory. Login as root and type: source /home/dorado1/prj/auv-pkgs/debian-pkg/deb-packages
- Java Installation
- Create a java installation specific to the auv-linux and auv-autonomy development and decouple from the debian system java:
- Install in a named directory in opt, example: /opt/jdk_1.6u12.
- Download jdk to /home/dorado1/tools/java
- login as root and enter root password.
- Change directory to /opt. Type: cd /opt
cp /home/dorado1/tools/java/jdk-6u12-linux.i586.bin .
- Change the permission of the bin file to be executable. Type:
chmod a+x jdk-6u12-linux-i586.bin
- Verify that you have permission to execute the file. Type:
ls -l
- Start the installation process.Type: ./jdk-6u12-linux-i586.bin
- Press the spacebar to display the next page. At the end, enter yes. For this procedure the jdk is installed in the /opt/jdk1.6.0_12 directory. When the installation has completed, you will see the word Done.
- exit from root back to user dorado1
- In the dorado1 user profile, set the java environment variable to /opt/jdk_1.6u12
AUV-Linux Install and Setup
- Setup the auv-linux development environment (build and install auv-pkgs (1.5hrs), auv-shared and auv-linux)
- as user 'auv' or 'dorado1' create the 'prj' directory. mkdir /home/auv/prj. cd /home/auv/prj
- export CVSROOT=':pserver:tm@moonjelly.shore.mbari.org:/home/cvs'
- cvs login
- cvs checkout auv-pkgs
- cvs checkout auv-shared
- cvs checkout auv-linux
- cd /home/auv/prj/auv-pkgs
- edit 'set-auv-env' and make appropriate edits to match the install directory (ex. /home/dorado1/prj)
- source set-auv-env (or ". set-auv-env")
- edit /home/auv/.bash_profile, add source /home/auv/prj/auv-pkgs/set-auv-env for persistance
- setup, build and install auv-pkgs
- su root
- cd $AUV_PKGS
- . 1_omniORB.bat
- . 2_omniNotify.bat
- . 3_gctpc.bat
- . 4_apr.bat
- . 5_apr-util.bat
- . 6_log4cxx.bat
- . 7_netcdb.bat
- . 8_newmat.bat
- . 9_cppunit.bat
- . final.bat (changes owner ship of prj directory to 'auv'
- As root, add auv startup script to /etc/init.d: /etc/init.d/auv-startup.sh
- #!/bin/sh
# auv startup script
-
- # initialize Posix mqueue infrastructure
mkdir /dev/mqueue
mount -t mqueue none /dev/mqueue
- chmod 777 /dev/mqueue
- chmod a+x auv-startup.sh
- Then (as root) update the startup sequence: update-rc.d -f auv-startup.sh start 80 2 3 4 5 .
- #** Note to remove: update-rc.d S80auv-startup.sh remove
- to disable the script - rename S80auv-startup.sh to K80auv-startup.sh. read the README in /etc/rcS.d/README
- exit back to user 'auv'
- build auv-shared
- in auv-shared/utility/Makefile - change LIBPATH to: LIBPATH = $AUV_PKGS/omniORB/build/lib/
- apt-get install xutils-dev to get gccmakedep
- build auv-linux
- edit taskIF Makefile - comment out idlj and javac lines
- Run supervisor (this creates logs/latest link)
- from auv-linux/onboard, run
- supervisor -proc sampleConfig/simprocesses.cfg -plan sampleConfig/simWaypoint.cfg
Autonomy Software checkout:
cd /home/dorado1/prj
svn co svn+ssh://kahuna.shore.mbari.org/svn/repos/TREX/trunk TREX
copy Europa from threadfish (Yikes! NASA version is moving ahead of TREX)
Build failed (jam in TREX) due to missing boost regex loadable module. To resolve this, a debian package was installed (developer version) which is a bit of a sledge hammer. Need to determine of this is a standard component of the OS or a developer package specific to TREX (judged it to be an OS component)
apt-get install libboost-regex-dev
Build failed due to libSystem.so missing
Fix: add $PLASMA_HOME/lib to LD_LIBRARY_PATH
- Rebuilding the linux kernel to enable the serial drivers on the Xtreme PC104 serial card (start 3:45
- Note: Procedure for Xtreme 104 12 port serial card is at http://www.connecttech.com/ftp/installguides/s_install_EC-LN26.htm
- logged in as root
- cp serial.conf /etc
- cd /usr/src
- tar jxf linux-source-2.6.18.tar.bz2
- cd linux-source-2.6.18
- make clean && make mrproper
- uname -r to get /boot/config-'uname -r' name
- cp /boot/config-2.6.18-6-686 ./.config (copy the previous kernel config)
- make menuconfig
- Go to Load an Alternate Configuration File (page down) and choose .config (which contains the configuration of your current working kernel)
- Device Drivers --> Character devices
- deselect (no *) the 'Non-standard serial port support (config: CONFIG_SERIAL
menuconfig: (Character Devices -> Standard/generic (dumb) serial support)
- config: SERIAL_8250
menuconfig: (Device Drivers -> Character Devices -> Serial drivers -> 8250/16550 and compatible serial support)
- config: CONFIG_SERIAL_8250_EXTENDED
menuconfig: (Device Drivers -> Character Devices -> Serial drivers -> Extended 8250/16550 serial driver options)
- config: CONFIG_SERIAL_8250_MANY_PORTS
menuconfig: (Device Drivers -> Character Devices -> Serial drivers -> Support more than 4 legacy serial ports)
- config: CONFIG_SERIAL_8250_SHARE_IRQ
menuconfig: (Device Drivers -> Character Devices -> Serial drivers -> Support for sharing serial interrupts)
- I also enabled Number of 8250/16550 serial ports to register at runtime to be 12 (was 4), this was not in manufacturers instructions.
- make-kpkg clean
- fakeroot make-kpkg --initrd --append-to-version=-custom kernel_image kernel_headers (note the space after custom (your string) and kernel_image)
- After the append to version, you can write any string (replace custom with your string). Restrictions are all lower case and must not contain whitespace or special chars (dash ok).
- dpkg -i linux-image-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
dpkg -i linux-headers-2.6.21.3-custom_2.6.21.3-custom-10.00.Custom_i386.deb
- Optional: Remove (comment out) the unwanted kernel from /boot/grub/menu.lst. The board will boot the newly built kernel so no action required.
- serial.conf was editted to change IRQ from 10 to 9 as there was a PC104 reconfig at some point.
- To finish workstation setup (if you want to run debian as a workstation with DHCP and seen on MBARI network do the following:
- First, see if your host name is set correclty using the following commands:
uname -n
hostname -a
hostname -s
hostname -d
hostname -f
hostname
-
- edit /etc/network/interfaces. Add the line 'hostname mvc-debian4.shore.mbari.org' under iface eth0 inet dhcp
- iface eth0 inet dhcp
hostname mybox.mydomain.com
- In /etc/dhcp3/dhclient.conf, uncomment and edit #send host-name "andare.fugue.com";
- To auto start omniNames and omniNotify services at bootup:
- create a file called 'startCorba.sh'
- #!/bin/bash
# Start CORBA (omniORB and omniNotify) services - name service and notification service.
- # . /etc/init.d/functions
export LD_LIBRARY_PATH=$(LD_LIBRARY_PATH):/usr/local/lib
export OMNIORB_HOME=/home/auv/prj/auv-pkgs/omniORB
export OMNIORB_CONFIG=$OMNIORB_HOME/omniORB.cfg
export OMNINAMES_LOGDIR=$OMNIORB_HOME/nameServiceLog
export OMNINOTIFY_DIR=/home/auv/prj/auv-pkgs/omniNotify
- # Start name service
echo "Start name service"
/usr/local/bin/omniNames &
- # Start notification service
echo "Start notification service"
/usr/local/bin/notifd -c $OMNINOTIFY_DIR/channel.cfg &
- make sure startCorba has execute permissions (chmod a+x startCorba.sh)
- Create a symbolic link using update-rc.d (Debian command)
- mvc-debian4:/etc/init.d# update-rc.d startCorba defaults
Adding system startup for /etc/init.d/startCorba ...
/etc/rc0.d/K20startCorba -> ../init.d/startCorba
/etc/rc1.d/K20startCorba -> ../init.d/startCorba
/etc/rc6.d/K20startCorba -> ../init.d/startCorba
/etc/rc2.d/S20startCorba -> ../init.d/startCorba
/etc/rc3.d/S20startCorba -> ../init.d/startCorba
/etc/rc4.d/S20startCorba -> ../init.d/startCorba
/etc/rc5.d/S20startCorba -> ../init.d/startCorba
- TODO:
- Get rid of boot up issues (kahlua audio, etc.) that are relics from installing on workstation
- Moving the harddrive from a workstation to the AUV (Lippert Coorunner (II?) AMD Geode PC104)
- Before shutdown on workstation (just prior to move), delete the ethernet address bound in the file /etc/udev/rules.d/z25_persistent-net.rules).
- If this file is not deleted, the eth0 interface will not come up and a message at boot "SIOCSIFADDR: no such device eth0" with no eth0 will result
- ifup eth0 will also show the error
- Network Settings (/etc/network/interfaces)
- change from workstation setup to auv setup (dhcp to static and mvc-debian4 to mvc-debian for AUV)
- edit /etc/hosts and change mvc-debian4 to mvc-debian
- edit /etc/dhcp3/dhclient.conf to add the following line:
- send host-name "foce2.shore.mbari.org"
- 127.0.0.1 localhost.localdomain localhost
- 134.89.32.16 mvc-debian.shore.mbari.org mvc-debian
- hostname mvc-debian.shore.mbari.org
- copy the interfaces (see attachment to this wiki) file to /etc/network
- address 134.89.32.16
- netmask 255.255.254.0
- gateway 134.89.32.1
- broadcast 134.89.32.255
- to check the hostname is set properly
- uname -n
- hostname -a
- hostname -s
- hostname -d
- hostname -f
- hostname
- For future apt-get usage - edit /etc/apt/sources.list and comment out the cdrom drive. This will get packages by ftp from debian mirror.
- Notes:
- Corba
- It might be better to pull in the omniORB4 from Debian since there are build errors and complexity associated with omniORB. The default config file location is /etc/omniORB4.cfg.
- Looks like the serial.conf file borrowed from debian 3.1 is not setting up the serial ports correctly - not sure if this was ever tested (likely not). Resolution: Need to rebuild the linux kernel to enable standard serial, etc. Instructions added above
- Tar up the built prj directory for transfer to another hard disk:
- tar -pczf auv-prj-built.tar.gz prj
- Debian Packages required to build auv-linux and TREX:
- apt-get install ant
- apt-get install ant-optional
- apt-get install autoconf
- apt-get install autogen
- apt-get install automake
- apt-get install binutils
- apt-get install bison
- apt-get install cvs
- apt-get install doxygen
- apt-get install flex
- apt-get install g++
- apt-get install libtool
- apt-get install make
- apt-get install subversion
- apt-get install libtool
- apt-get install gdb
- apt-get install openssl
- apt-get install ssh
- apt-get install minicom
- apt-get install python-all
- apt-get install python-all-dev
- apt-get install lirc setserial
- apt-get install linux-source-2.6.18
- apt-get install kernel-package libncurses5-dev fakeroot wget build-essential
- apt-get install xutils-dev
- apt-get install linux-doc-2.6.18
- apt-get install linux-manual-2.6.18
- apt-get install manpages-dev
- apt-get install xutils-dev
- apt-get install jam
- apt-get install swig
- apt-get install libboost-regex-dev
|